package com.bridgeintelligent.tag.mapper;

import com.bridgeintelligent.tag.webserver.dim.mgmt.api.indexdim.IndexDimModel;
import com.bridgeintelligent.tag.webserver.dim.mgmt.api.indexdim.IndexNameInfo;
import com.bridgeintelligent.tag.webserver.dim.mgmt.api.indexdim.TimeSymbolModel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


@Mapper
public interface IndexDimMapper {

    /**
     * 根据索引状态查询索引列表
     * @param indexStatus 索引状态
     * @return 索引列表
     */
    List<IndexNameInfo> findIndexNameListByStatus(@Param("indexStatus")String indexStatus);

    /**
     * 查询索引标签配置信息列表
     * @return 索引列表
     */
    List<IndexDimModel> findIndexDimList();

    /**
     * 新增索引标签信息
     * @param indexDimModel
     */
    void addIndexDimInfo(IndexDimModel indexDimModel);

    /**
     * 修改索引标签信息
     * @param indexDimModel
     */
    void updateIndexDimInfo(IndexDimModel indexDimModel);

    /**
     * 查询当前最大索引ID
     * @return
     */
    Integer findMaxIndexId();


    /**
     * 根据ID删除索引标签信息
     * @param id 索引ID
     */
    void delIndexDimInfo(@Param("id")Integer id);

    /**
     * 根据索引ID查询索引标签配置信息
     * @param id 索引ID
     * @return
     */
    IndexDimModel findIndexDimById(@Param("id")Integer id);

    /**
     * 新增索引信息
     * @param info 索引信息
     */
    void addIndexNameInfo(IndexNameInfo info);

    /**
     * 根据ID删除索引
     * @param id
     */
    void delIndexNameInfo(@Param("id")String id);

    /**
     * 新增索引时间信息
     * @param model
     */
    void addIndexTimeInfo(TimeSymbolModel model);

    /**
     * 根据索引ID删除时间信息
     * @param indexId
     */
    void delIndexTimeInfo(@Param("indexId")String indexId);

    /**
     * 根据索引ID修改数据状态
     * @param indexStatus
     * @param id
     */
    void updateIndexDimStatus(@Param("indexStatus")String indexStatus,@Param("id")Integer id);

    /**
     * 根据索引ID修改数据状态
     * @param indexStatus
     * @param id
     */
    void updateIndexNameStatus(@Param("indexStatus")String indexStatus,@Param("id")String id);

    /**
     * 根据ID查询索引信息
     * @param id
     * @return
     */
    IndexNameInfo findIndexNameById(@Param("id")String id);

    /**
     * 根据索引ID查询索引下配置的标签ID
     * @param id 索引ID
     * @return
     */
    String findIndexDim(@Param("id")Integer id);

    /**
     * 根据索引编号查询
     * @param indexCode
     * @return
     */
    IndexDimModel findIndexByCode(@Param("indexCode")String indexCode);

    /**
     * 根据索引名称查询
     * @param indexName
     * @return
     */
    IndexDimModel findIndexByName(@Param("indexName")String indexName);

    /**
     * 根据标签ID查询标签所属目录
     * @param dimIds
     * @return
     */
    List<String> findCatalogIdByDimId(@Param("dimIds")List<String> dimIds);

}
